﻿#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <string.h>
#include <assert.h>
#include <ctype.h>
#include <stdlib.h>

//比如：写一个判断大写字母和小写字母
//int main()
//{
//	int ch = getchar();
//	if (ch >= 'a' && ch <= 'z')
//	{
//		printf("小写\n");
//	}
//	else if(ch >= 'A' && ch <= 'Z')
//	{
//		printf("大写\n");
//	}
//	return 0;
//}

//int main()
//{
//	int ch = getchar();
//	if (islower(ch))
//	{
//		printf("小写");
//	}
//	else if (isupper(ch))
//	{
//		printf("大写");
//	}
//	else
//	{
//		printf("输入错误");
//	}
//
//	return 0;
//}

//写⼀个代码，将字符串转换成小写
//int main()
//{
//	char arr[] = "dsadad";
//	int i = 0;
//	while (arr[i])
//	{
//		if (isupper(arr[i]))
//		{
//			arr[i] = arr[i] - 32;
//		}
//		putchar(arr[i]);
//		i++;
//	}
//	
//	return 0;
//}

//string模拟实现
//size_t my_strlen(const char* arr)
//{
//	assert(arr);
//	char* s = arr;
//
//	while (*arr)
//	{
//		arr++;
//	}
//	return arr - s ;
//}
//int main()
//{
//	char arr[] = "sdadad";
//	size_t ret = my_strlen(arr);
//	printf("%zd", ret);
//
//	return 0;
//}

//size_t my_strlen(const char* arr)
//{
//	if (*arr == '\0')
//	{
//		return 0;
//	}
//	else
//	{
//		return 1 + my_strlen(arr + 1);
//	}
//	
//}
//
//int main()
//{
//	char arr[] = "sdadad";
//	size_t ret = my_strlen(arr);
//	printf("%zd", ret);
//
//	return 0;
//}

//strcpy

//int main()
//{
//	char arr1[20] = "abcdef";
//	char* arr2 = "qqqq";
//	strcpy(arr1, arr2);
//	printf("%s", arr1);
//
//	return 0;
//}

//char* my_strlen(char* arr1, const char* arr2)
//{
//	assert(arr1 && arr2);
//	char* str = arr1;
//
//	while (*arr1++ = *arr2++)
//	{
//		;
//	}
//	*arr1 = *arr2;
//
//	return str;
//}
//
//int main()
//{
//	char arr1[20] = "xxxxxxxxxx";
//	char arr2[] = "fufu厉害捏";
//	char* str = my_strlen(arr1,arr2);
//	printf("%s\n", str);
//
//	return 0;
//}


//strcat

//int main()
//{
//	char arr1[20] = "xxxxx";
//	char arr2[] = "qwerrrrrr";
//	strcat(arr1, arr2);
//	printf("%s", arr1);
//
//	return 0;
//}

//char* my_strcat(char* arr1, const char* arr2)
//{
//	assert(arr1 && arr2);
//	char* str = arr1;
//	while (*arr1)
//	{
//		arr1++;
//	}
//
//	while (*arr1++ = *arr2++)
//	{
//		;
//	}
//
//	return str;
//}
//
//int main()
//{
//	char arr1[20] = "xxxxxxxxxxx";
//	char arr2[] = "fufu6666";
//	printf("%s",my_strcat(arr1, arr2));
//
//	return 0;
//}


//strcmp
// 
//int main()
//{
//	char arr1[] = "abcd";
//	char arr2[] = "abd";
//	int str = strcmp(arr1, arr2);
//	if (str > 0)
//	{
//		printf("大于");
//	}
//	else if(str == 0)
//	{
//		printf("等于");
//	}
//	else
//	{
//		printf("小于");
//	}
//
//	return 0;
//}

//int my_strcmp(const char* arr1, const char* arr2)
//{
//	while (*arr1 == *arr2)
//	{
//		if (*arr1 == '\0')
//		{
//			return 0;
//		}
//		arr1++;
//		arr2++;
//	}
//
//	return *arr1 - *arr2;
//
//}
//
//int main()
//{
//	char* arr1 = "abcdef";
//	char* arr2 = "abcda";
//	int str = my_strcmp(arr1, arr2);
//
//	if (str > 0)
//		{
//			printf("大于");
//		}
//		else if(str == 0)
//		{
//			printf("等于");
//		}
//		else
//		{
//			printf("小于");
//		}
//
//	return 0;
//}

//char* my_strstr(const char* arr1, const char* arr2)
//{
//	assert(arr1 && arr2);
//	const char* s1 = NULL;
//	const char* s2 = NULL;
//	const char* cul = arr1;
//
//	if (*arr2 == '\0')
//	{
//		return (char*)arr1;
//	}
//
//	while (*cul)
//	{
//		s1 = cul;
//		s2 = arr2;
//
//		while (*s1 && *s2 && *s1 == *s2)
//		{
//			s1++;
//			s2++;
//		}
//		//不相等跳出来 *s2 == \0 说明找到了
//		//不相等跳出来 *s2 != \0 说明本次循环没找找到
//		//*s1 == \0 && *s2 == \0 说明找到2个完全相同字符串
//		if (*s2 == '\0')
//		{
//			return (char*)cul;
//		}
//
//		cul++;
//	}
//
//	//*s1 == \0 说明找找不到了
//	return NULL;
//}
//
//int main()
//{
//	char* arr1[] = "abcdef";
//	char* arr2[] = "cde";
//	int str = my_strstr(arr1, arr2);
//	if (str == NULL)
//	{
//		printf("找不到\n");
//	}
//	else
//	{
//		printf("%s", str);
//	}
//
//	return 0;
//}


//strtok
//int main()
//{
//	char arr1[] = "zhangsan@163.com";
//	char arr3[30] = { 0 };
//	strcpy(arr3, arr1);
//	const char arr2[] = "@.";
//
//	char* p = NULL;
//	for (p = strtok(arr3, arr2); p != NULL; p = strtok(NULL, arr2))
//	{
//		printf("%s\n", p);
//	}
//
//	return 0;
//}

